#ifndef CONFIG_H
#define CONFIG_H

#include "sys_pub.h"

// 系统配置结构体
typedef struct {
    // 原有配置项
    uint16_t current_threshold;       // 电流阈值 (mA) //设定硬度
    float current_hysteresis;      // 电流回差系数
    uint16_t cooling_time_limit;   // 最大制冷时间 (秒)
    uint16_t preservation_temp;       // 目标保鲜温度 (0.1°C)
    uint16_t preservation_hysteresis; // 温度回差 (0.1°C)
    uint16_t check_interval;       // 检测间隔 (秒)
    uint16_t thawing_time;         // 解冻时间 (秒)
    
    // 补充的配置项
    uint16_t first_pump_work_time;         // 第一次气泵工作时间 (秒)
    uint16_t feeding_pump_work_time;       // 打料气泵工作时间 (秒)
    uint16_t feeding_pump_delay_time;      // 打料气泵延时工作时间 (秒)
    uint16_t night_heat_interval;          // 夜间保温间隔时间 (秒)
    uint16_t night_cooling_clean_time;     // 夜间转制冷清洗时间 (秒)
    uint16_t material_pumping_max_time;    // 抽料允许最长时间 (秒)
    uint16_t auto_restart_time;            // 自动重启时间 (秒)
    uint16_t pumping_start_count;          // 抽料开始出料数
    float alarm_threshold[2];              // 报警值区间（低-高）
    uint8_t voltage_alarm_enable;          // 电压报警使能 (0-禁用, 1-使能)
    float pre_cooling_diff_temp;           // 预冷回差温度 (°C)
    uint16_t cooling_exceed_time;          // 制冷超过时间 (秒)
    uint16_t compressor_on_delay;          // 压缩机开延时 (秒)
    uint16_t stirrer_off_delay;            // 搅拌机关延时 (秒)
    uint16_t cup_drop_position_delay;      // 落杯机器位置延时时间 (秒)
    uint16_t cup_drop_max_work_time;       // 落杯机器工作最长时间 (秒)
    float trough_temp_correction;          // 料槽温度修正 (°C)
    float cylinder_temp_correction;        // 料缸温度修正 (°C)
    float press_temp_correction;           // 压机温度修正 (°C)
    float voltage_correction;              // 电压修正 (V)
    float inverter_min_current;            // 变频器故障最小电流(A)
    uint8_t cleaning_days;                 // 清洗天数
    uint8_t mac_locked;                    // MAC锁定 (0-未锁定, 1-已锁定)
    uint8_t mac_identifier[2];             // MAC标识
    uint16_t auto_speed[2];                // 自动速度XZ
    // 配置版本和校验
    uint8_t version;
    uint16_t checksum;
} SystemConfig;

// 配置默认值
#define DEFAULT_CURRENT_THRESHOLD       1.8f
#define DEFAULT_CURRENT_HYSTERESIS      0.9f
#define DEFAULT_COOLING_TIME_LIMIT      2400    // 40分钟 (秒)
#define DEFAULT_PRESERVATION_TEMP       5.0f
#define DEFAULT_PRESERVATION_HYSTERESIS 2.0f
#define DEFAULT_CHECK_INTERVAL          3600    // 1小时 (秒)
#define DEFAULT_THAWING_TIME            480     // 8分钟 (秒)
#define CONFIG_VERSION                  1

// 配置操作函数
void config_init(void) ;
bool config_load();
bool config_save();
void config_set_defaults();
bool config_validate(const SystemConfig *config);

const SystemConfig *config_get();
#endif // CONFIG_H
    